package nodelist

import (
	"bytes"
	"log"
	"strconv"
)

// https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xnarn7/
// 删除指定节点
// 细节: 因为本题中没有提供head 节点，所以应该删除下一个节点，把下一个节点的值赋给
// 给定的节点即可
func deleteNode(node *ListNode) {
	if nil == node.Next {
		return
	}
	node.Val = node.Next.Val
	node.Next = node.Next.Next
}

// 数据结构: 链表
type ListNode struct {
	Val  int
	Next *ListNode
}

// 生成一个新链表
func NewListNode(arr []int) (head *ListNode) {
	if len(arr) == 0 {
		return
	}
	head = new(ListNode)
	head.Val = arr[0]
	currentNode := head
	for index := 1; index < len(arr); index++ {
		currentNode.Next = new(ListNode)
		currentNode = currentNode.Next
		currentNode.Val = arr[index]
	}
	return
}

// 打印链表
func PrintListNode(head *ListNode) {
	buf := bytes.Buffer{}
	buf.WriteString("[")
	currentNode := head
	for nil != currentNode {
		if currentNode != head {
			buf.WriteString(",")
		}
		buf.WriteString(strconv.Itoa(currentNode.Val))
		currentNode = currentNode.Next
	}
	buf.WriteString("]")
	log.Println(buf.String())
}
